class Watcher{
  constructor(vm, key, cb){
    this.vm = vm
    // data的属性名称
    this.key = key
    // 回调函数更新视图
    this.cb = cb

    // 把watcher对象记录到Dep的静态属性target
    Dep.target = this
    //触发get方法，addSub
    this.oldValue = vm[key]
    Dep.target = null
  }
  // 当数据发生变化时更新视图
  update(){
    let newVal = this.vm[this.key]
    if(this.oldValue === newVal) return

    this.cb(newVal)
  }
}